home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 2
/
Gekikoh Dennoh Club Vol. 2 (Japan).7z
/
Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin
/
kowin
/
font
/
tcwin24s.lzh
/
tc_load.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-04-05
|
4KB
|
165 lines
/****************************/
TC_WIN.win
TC font loader 1991 1/28 小笠原博之
SPS-NET: SPS0783 COR.
/****************************/
#include <stdio.h>
#include <wlib.h>
#include "tc_win.h"
extern char *tcfont;
extern UskMes();
int defchar= 0;
/****************************************/
/* .fon ファイルの読み込み */
/****************************************/
char *
Tc_load( wp, fname )
WindowID wp;
unsigned char *fname;
{
FILE *fp;
unsigned char *ptr= (unsigned char*)tcfont;
UskMes( "読み込み中", wp );
defchar= 0;
if( fp= fopen( fname, "rb" ) ){
int i;
for( i= 0 ; i< 16 ; i++, ptr+= (72*16) /*512*/ ){
int k;
for( k=0 ; k<16 ; k++ ){
int j;
unsigned char *pptr= ptr+k*3;
for( j=0 ; j<24 ; j++, pptr+= (16*3) ){
*pptr= ~getc(fp);
pptr[1]= ~getc(fp);
pptr[2]= 255;
}
defchar++;
if( feof( fp ) )
break;
}
}
while( !feof( fp ) ){
int j;
for( j=0 ; j<48 ; j+=3 ){
int i;
unsigned char *pptr= (unsigned char*)(ptr+j);
for( i=0 ; i<24 ; i++, pptr+= 16*3 ){
*pptr= ~getc(fp);
pptr[1]= ~getc(fp);
pptr[2]= ~getc(fp);
}
if( defchar++ >= MaxChar ){
fclose( fp );
return "Warning:データが多すぎます!";
}
}
ptr+= 72*16/*512*/;
}
loopexit:
fclose( fp );
}else{
*fname= '\0';
return "ファイルが見付かりません";
}
UskMes( "読み込み終了", wp );
return 0;
}
/****************************************/
/* .fon ファイルの書き込み */
/****************************************/
Tc_save( wp, fname )
WindowID wp;
unsigned char *fname;
{
FILE *fp;
unsigned char *ptr= (unsigned char*)tcfont;
extern int editflag;
if( defchar <= 0 ){
UskMes( "セーブ範囲が設定されていません", wp );
return;
}
if( fp= fopen( fname, "wb" ) ){
int i;
int save= defchar;
UskMes( "書き込み中", wp );
for( i=0 ; i<16 ; i++, ptr+= 72*16/*512*/ ){
int k;
for( k=0 ; k<16 ; k++ ){
int j;
unsigned char *pptr= ptr+k*3;
for( j=0 ; j<24 ; j++, pptr+= 16*3/*32*/ ){
putc( ~(*pptr), fp );
putc( ~(pptr[1]), fp );
}
if( --save <= 0 )
break;
}
if( save <= 0 )
break;
}
while( save>0 ){
int j;
for( j=0 ; j<48 ; j+=3 ){
int i;
unsigned char *pptr= (unsigned char*)(ptr+j);
for( i=0 ; i<24 ; i++, pptr+= 16*3 ){
putc( ~(*pptr), fp );
putc( ~(pptr[1]), fp );
putc( ~(pptr[2]), fp );
}
if( --save <= 0)
break;
}
ptr+= 72*16/*512*/;
}
fflush( fp );
if( ferror() ){
UskMes( "書き込みエラー", wp );
}else{
UskMes( "書き込み正常終了しました", wp );
editflag= FALSE;
}
fclose( fp );
}else
UskMes( "ファイルがOPENできません", wp );
}
/****************************************/
/* ファイル名を得る */
/****************************************/
setfname( fname )
char *fname;
{
if( !strchr( fname, '.' ) )
strcat( fname, ".fon" );
}
/****************************************/
/* ファイル名の変更 */
/****************************************/
Tc_rename( wp, fname )
WindowID wp;
char *fname;
{
extern int editflag;
char strbuf[256];
UskMes( "ファイル名を入力して下さい", wp );
lineinput( strbuf );
if( *strbuf ){
strcpy( fname, strbuf );
UskMes( "ファイル名を変更しました", wp );
editflag= TRUE;
}else
UskMes( "キャンセルしました", wp );
}